// https://www.lintcode.com/problem/string-to-integer/

class Solution {
public:
    /**
     * @param str: A string
     * @return: An integer
     */
    int stringToInteger(string &str) {
        int len = str.length();
        int result = 0;
        // for (int i = len - 1; i >= 0; --i)
        // {
        //     if (str[i] >= '0' && str[i] <= '9')
        //     {
        //         result += (str[i] - '0') * pow(10, (len - i - 1));
        //     }
        //     else if (str[i] == '-')
        //     {
        //         result = -result;
        //     }
        // }
        // return result;
        
        // 法二：
        // 从高位开始循环累加。
        // 转换公示如下
        // 字符串：S_1S_2S_3S_4S 
        //   --> 数字：((S_1*10+S_2)*10+S_3)*10+S_4
        int start = 0;
        if (str[0] == '-') start = 1; 
        for (int i = start; i < len; ++i)
        {
            result = result * 10 + str[i] - '0';
        }
        if (start == 1) result = -result;
        return result;
    }
};